package com.ccp.dev.qbdms.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.ccp.dev.core.basic.annotion.Action;
import com.ccp.dev.core.basic.consts.UrlConstants;
import com.ccp.dev.core.basic.internationalization.SysBaseController;
import com.ccp.dev.core.basic.util.ContextUtil;
import com.ccp.dev.core.basic.web.query.QueryFilter;
import com.ccp.dev.core.util.BeanUtils;
import com.ccp.dev.core.util.RequestUtil;
import com.ccp.dev.core.util.StringUtil;
import com.ccp.dev.core.util.TimeUtil;
import com.ccp.dev.core.util.log.SysAuditThreadLocalHolder;
import com.ccp.dev.qbdms.consts.ZhiLiangConst;
import com.ccp.dev.qbdms.enums.FlowStatusEnum;
import com.ccp.dev.qbdms.expimp.util.AbstractExpUtil;
import com.ccp.dev.qbdms.expimp.util.AuxiliaryUtil;
import com.ccp.dev.qbdms.model.WQbdQualityTarget;
import com.ccp.dev.qbdms.service.WCustomColumnsService;
import com.ccp.dev.qbdms.service.WQbdQualityTargetService;
import com.ccp.dev.qbdms.util.BaseUtil;
import com.ccp.dev.qbdms.util.ProjectUUIDUtils;
import com.ccp.dev.qbdms.util.StructureModifyUtil;
import com.ccp.dev.system.model.SysOrg;
import com.ccp.dev.system.model.SysRole;
import com.ccp.dev.system.model.SysUser;
import com.ccp.dev.system.service.SysOrgService;
import com.ccp.dev.workflow.model.ProcessRun;
import com.ccp.dev.workflow.model.TaskOpinion;
import com.ccp.dev.workflow.model.bpm.ProcessCmd;
import com.ccp.dev.workflow.service.ProcessRunService;
import com.ccp.dev.workflow.service.TaskOpinionService;
import com.google.common.collect.Maps;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 质量目标 信息操作处理控制器
 *
 * @author prh
 * @date 2020-09-29 11:00:29
 */
@Controller
/**
 * 请将此名称添加到日志开关
 */
@Action(customModel = "质量目标")
@RequestMapping("/qbdms/wQbdQualityTarget")
public class WQbdQualityTargetController extends SysBaseController {

  @Resource
  private WQbdQualityTargetService wQbdQualityTargetService;
  @Resource
  private WCustomColumnsService wCustomColumnsService;
  @Resource
  private SysOrgService sysOrgService;
  @Resource
  private ProcessRunService processRunService;
  @Resource
  private TaskOpinionService taskOpinionService;

  /**
   * 功能描述: 跳转到首页
   *
   * @return: java.lang.String
   * @auther: prh
   * @date: 2020-09-29 11:00:29
   */
  @RequestMapping(UrlConstants.VIEW_DISPATCH_PREFIX + UrlConstants.MODULE_FUNCTION_LIST)
  @Action(description = "跳转到质量目标首页", exectype = "页面跳转日志")
  public String viewList(HttpServletRequest request, ModelMap modelMap) {
    wCustomColumnsService.addCustomCols(request);
    // 当前系统等级
    BaseUtil.SystemLevel currentSystemLevel = BaseUtil.getCurrentSystemLevel();
    modelMap.put("currentSystemLevel", currentSystemLevel);
    // 当前登录用户id
    modelMap.put("currentUserId", ContextUtil.getCurrentUserId());
    SysRole sysRole = (SysRole) request.getSession().getAttribute(SysRole.CURRENT_SYSROLE);
    if (sysRole.getAlias().equals("bpm_zlzgzly") || sysRole.getAlias().equals("bpm_qnzl")) {
      modelMap.put("canEdit", "true");
    } else {
      modelMap.put("canEdit", "false");
    }
    modelMap.put("rolealis", sysRole.getAlias());
    List<SysOrg> listOrg = new ArrayList<SysOrg>();
    List<SysOrg> resultOrg = new ArrayList<SysOrg>();
    listOrg = sysOrgService
        .querySubSysOrgBySupOrgIdNoChild(sysOrgService.getSysOrgByOrgCode("1734").getOrgId());
    for (SysOrg org : listOrg) {
      if (org.getCode().equals("wrj")) {
        List<SysOrg> listOrgSub = sysOrgService
            .querySubSysOrgBySupOrgIdNoChild(sysOrgService.getSysOrgByOrgCode("wrj").getOrgId());
        resultOrg.addAll(listOrgSub);
      } else {
        resultOrg.add(org);
      }
    }
    modelMap.put("researchRoomList", JSON.toJSONString(resultOrg));

    return "wQbdQualityTarget/list";
  }

  /**
   * 功能描述: 附带检索条件的分页查询
   *
   * @param: [request] http请求
   * @return: java.lang.Object
   * @auther: prh
   * @date: 2020-09-29 11:00:29
   */
  @RequestMapping(UrlConstants.MODULE_FUNCTION_LIST)
  @ResponseBody
  @Action(description = "附带检索条件的分页查询质量目标", detail = "查询数据信息<#if success>成功<#else></#if>")
  public Object list(HttpServletRequest request) throws IllegalAccessException {
    QueryFilter queryFilter = new QueryFilter(request, true);
    if (StringUtil.isEmpty(queryFilter.get("orderField"))) {
      // 没有排序,默认按照课题评审会会议时间倒序排列,课题评审会会议时间相同的情况下按创建时间倒序排列
      queryFilter.addFilter("orderField", "createtime");
      queryFilter.addFilter("orderSeq", "desc");
    }
    // 添加通用查询条件
    ZhiLiangConst.addQueryFilter(queryFilter);
    //分页数据
    List<WQbdQualityTarget> pageDatas = wQbdQualityTargetService.queryList(queryFilter);
    // 密级、上报状态、数据来源单位显示中文
    ZhiLiangConst.showName(pageDatas);
    //判断流程状态
    ZhiLiangConst.isDataAllowEditByFlowStatus(pageDatas);

    SysAuditThreadLocalHolder.putParamerter("success", true);
    return success(pageDatas, queryFilter.getPageBean().getTotalCount());
  }


  /**
   * 功能描述: 跳转到新增页面
   *
   * @return: java.lang.String
   * @auther: prh
   * @date: 2020-09-29 11:00:29
   */
  @RequestMapping(UrlConstants.VIEW_DISPATCH_PREFIX + UrlConstants.MODULE_FUNCTION_ADD_UPDATE)
  @Action(description = "跳转到质量目标新增页面", exectype = "页面跳转日志")
  public String viewAdd(HttpServletRequest request, ModelMap modelMap) {
    String id = RequestUtil.getString(request, "id");
    modelMap.put("id", id);

    if (StringUtil.isEmpty(id)) {
      SysUser sysUser = (SysUser) ContextUtil.getCurrentUser();
      SysOrg sysOrg = (SysOrg) ContextUtil.getCurrentOrg();
      modelMap.put("filldept", sysOrg.getOrgName());
      modelMap.put("fillman", sysUser.getFullName());
      modelMap.put("filldate", TimeUtil.getCurrentDate());
      modelMap.put("fillmanaccount", sysUser.getAccount());
      modelMap.put("filldeptid", sysOrg.getCode());
    }
    String userId = ContextUtil.getCurrentUserId();
    SysOrg org = sysOrgService.getOrgByUserId(userId);
    modelMap.put("dept", org.getCode());
    modelMap.put("deptname", org.getOrgName());
    if (StringUtil.isEmpty(id)) {
      //编号
      modelMap.put("num", wQbdQualityTargetService.generateNewRegisternum());
    }

    String flag = RequestUtil.getString(request, "flag");
    modelMap.put("flag", flag);
    String runId = "";
    List<TaskOpinion> taskOpinionNewList = new ArrayList<TaskOpinion>();
    ProcessRun processRun = processRunService.getByBusinessKey(id);
    if (BeanUtils.isNotEmpty(processRun)) {
      runId = processRun.getRunId();
      List<TaskOpinion> taskOpinionList = taskOpinionService.getByRunId(runId);
      for (TaskOpinion taskOpinion : taskOpinionList) {
        if (taskOpinion.getEndTime() != null) {
          taskOpinionNewList.add(taskOpinion);
        }
      }
    }
    modelMap.put("taskOpinionNewList", taskOpinionNewList);
    if (StringUtils.isNotBlank(id)) {
      WQbdQualityTarget wQbdQualityTarget = wQbdQualityTargetService.getOneById(id);
      modelMap.put("flowStatus", wQbdQualityTarget.getFlowStatus());
    }

    return "wQbdQualityTarget/add";
  }

  /**
   * 功能描述:  数据保存通用方法
   *
   * @param: wQbdQualityTarget 保存的对象
   * @return: java.lang.Object
   * @auther: prh
   * @date: 2020-09-29 11:00:29
   */
  @RequestMapping(UrlConstants.MODULE_FUNCTION_SAVE)
  @ResponseBody
  @Action(description = "保存质量目标数据", detail = "<#if isAdd>新增<#else>编辑</#if>质量目标数据<#if success>成功<#else>失败</#if><#if StringUtil.isNotEmpty(modifyInfo)>成功></#if>")
  public Object save(@RequestBody WQbdQualityTarget wQbdQualityTarget) {
    String id = wQbdQualityTarget.getId();
    int result;
    if (StringUtil.isEmpty(id)) {
      SysAuditThreadLocalHolder.putParamerter("isAdd", true);
      //新增操作
      //新增数据前生成随机Id
      wQbdQualityTarget.setId(ProjectUUIDUtils.getUUIDFor32());
      ZhiLiangConst.addCommonFields(wQbdQualityTarget);

      wQbdQualityTarget.setTenantId(ContextUtil.getCurrentUserTenantId());
      wQbdQualityTarget.setCreateBy(ContextUtil.getCurrentUserId());
      wQbdQualityTarget.setCreateTime(new Date());
      wQbdQualityTarget.setFlowStatus(FlowStatusEnum.NOT_SUBMIT.getValue());
      wQbdQualityTarget.setFlowStatusProcess("0");

      result = wQbdQualityTargetService.add(wQbdQualityTarget);
    } else {
      SysAuditThreadLocalHolder.putParamerter("success", false);
      //修改操作
      ZhiLiangConst.updateCommonFields(wQbdQualityTarget);

      wQbdQualityTarget.setUpdateBy(ContextUtil.getCurrentUserId());
      wQbdQualityTarget.setUpdateTime(new Date());

      result = wQbdQualityTargetService.update(wQbdQualityTarget);
      SysAuditThreadLocalHolder.putParamerter("modifyInfo", StructureModifyUtil
          .getModifyInfo(wQbdQualityTargetService.getOneById(id), wQbdQualityTarget));
    }
    if (result > 0) {
      SysAuditThreadLocalHolder.putParamerter("success", true);
    } else {
      SysAuditThreadLocalHolder.putParamerter("success", false);
    }

    Map<String, Object> idMap = Maps.newHashMap();
    idMap.put("id", wQbdQualityTarget.getId());
    return result > 0 ? getResultDataSuccess("save.success", idMap)
        : getResultDataError("save.failure");
  }

  /**
   * 功能描述: 跳转到详情页面
   *
   * @return: java.lang.String
   * @auther: prh
   * @date: 2020-09-29 11:00:29
   */
  @RequestMapping(UrlConstants.VIEW_DISPATCH_PREFIX + "/particulars")
  @Action(description = "跳转到质量目标详情页面", exectype = "页面跳转日志")
  public String viewParticulars(HttpServletRequest request, ModelMap modelMap) {
    String id = RequestUtil.getString(request, "id");
    modelMap.put("id", id);
    String isClose = RequestUtil.getString(request, "isClose");
    modelMap.put("isClose", isClose);

    String flag = RequestUtil.getString(request, "flag");
    modelMap.put("flag", flag);
    String runId = "";
    List<TaskOpinion> taskOpinionNewList = new ArrayList<TaskOpinion>();
    List<ProcessRun> processRunList = processRunService.getByBusinessKeyList(id);
    if (processRunList!=null) {
      for(ProcessRun processRun:processRunList){
        if (BeanUtils.isNotEmpty(processRun)) {
          if (processRun.getFlowKey().equals("zlmbsplc")) {
            runId = processRun.getRunId();
            List<TaskOpinion> taskOpinionList = taskOpinionService.getByRunId(runId);
            for (TaskOpinion taskOpinion : taskOpinionList) {
              if (taskOpinion.getEndTime() != null) {
                taskOpinionNewList.add(taskOpinion);
              }
            }
          }
        }
      }
    }

    modelMap.put("taskOpinionNewList", taskOpinionNewList);
    WQbdQualityTarget wQbdQualityTarget = wQbdQualityTargetService.getOneById(id);
    modelMap.put("flowStatus", wQbdQualityTarget.getFlowStatus());
    modelMap.put("runId", runId);

    return "wQbdQualityTarget/particulars";
  }

  /**
   * 功能描述: 根据主键id获取一条数据的通用查询方法
   *
   * @param: id 参数对象必须是"id"
   * @return: java.lang.Object
   * @auther: prh
   * @date: 2020-09-29 11:00:29
   */
  @RequestMapping(UrlConstants.MODULE_FUNCTION_GET)
  @ResponseBody
  @Action(description = "根据主键id查询质量目标的一条数据", detail = "根据主键id查询质量目标的数据<#if success>成功<#else>失败</#if>")
  public Object get(@RequestParam("id") String id) {
    WQbdQualityTarget wQbdQualityTarget = wQbdQualityTargetService.getOneById(id);
    if (null == wQbdQualityTarget) {
      SysAuditThreadLocalHolder.putParamerter("success", false);
      return getResultDataError("get.failure");
    }
    FlowStatusEnum flowStatusEnum = FlowStatusEnum
        .getEnumByValue(wQbdQualityTarget.getFlowStatus());
    wQbdQualityTarget.setFlowStatusStr(flowStatusEnum.getName());
    SysAuditThreadLocalHolder.putParamerter("success", true);
    return getResultDataSuccess("get.success", wQbdQualityTarget);
  }

  /**
   * 功能描述: 根据主键ID删除数据的通用删除方法
   *
   * @param: id 参数名称必须是"id"
   * @return: java.lang.Object
   * @auther: prh
   * @date: 2020-09-29 11:00:29
   */
  @PostMapping(UrlConstants.MODULE_FUNCTION_DELETE)
  @ResponseBody
  @Action(description = "根据主键ID删除质量目标数据", exectype = "删除日志", detail = "删除数据信息<#if success>成功<#else>失败</#if>")
  public Object delete(@RequestParam("id") String id) throws Exception {
    String userId = ContextUtil.getCurrentUserId();
    String[] ids = id.split(",");
    for (String key : ids) {
      WQbdQualityTarget wQbdQualityTarget = wQbdQualityTargetService.getOneById(key);
      if (!userId.equals(wQbdQualityTarget.getCreateBy())) {
        SysAuditThreadLocalHolder.putParamerter("success", false);
        return fail("删除失败，只能删除自己创建的数据！");
      }
      //判断流程状态
      FlowStatusEnum flowStatusEnum = FlowStatusEnum
          .getEnumByValue(wQbdQualityTarget.getFlowStatus());
      if (!flowStatusEnum.isDel()) {
        SysAuditThreadLocalHolder.putParamerter("success", false);
        return fail("删除失败，不允许删除流程未结束数据！");
      }
    }
    if (StringUtil.isEmpty(id)) {
      SysAuditThreadLocalHolder.putParamerter("success", false);
      return fail("delete.failure.message");
    }

    int result=0;
    //质量目标审批流程实例删除
    for (String key : ids) {
      WQbdQualityTarget wQbdQualityTarget = wQbdQualityTargetService.getOneById(key);
      if(!wQbdQualityTarget.getFlowStatus().equals(FlowStatusEnum.NOT_SUBMIT.getValue()) && StringUtil.isNotEmpty(wQbdQualityTarget.getFlowStatus())){
        List<ProcessRun> processRunList = processRunService.getByBusinessKeyList(key);
        for(ProcessRun processRun:processRunList){
          if(!(wQbdQualityTarget.getFlowStatus().equals(FlowStatusEnum.DONE.getValue()))){
            if(processRun!=null){
              processRunService.recoverByRunId(processRun.getRunId());
            }
          }
          if(processRun!=null){
            processRunService.deleteByProcessRun(processRun);
          }
        }
      }
    }

    //质量目标审批数据删除
    result = wQbdQualityTargetService.delByIdArray(id.split(","));
    if (result > 0) {
      SysAuditThreadLocalHolder.putParamerter("success", true);
    } else {
      SysAuditThreadLocalHolder.putParamerter("success", false);
    }
    return result > 0 ? getResultDataSuccess("delete.success")
        : getResultDataError("delete.failure");
  }

  /**
   * 功能描述: 跳转到导出选择字段页面
   *
   * @throws Exception
   * @param: [request] http请求
   * @param: modelMap
   * @return: java.lang.String
   * @auther: prh
   * @date: 2020-09-29 11:00:29
   */
  @RequestMapping(UrlConstants.VIEW_DISPATCH_PREFIX + "/export")
  @Action(description = "跳转到质量目标导出选择字段页面", exectype = "页面跳转日志")
  public String export(HttpServletRequest request, ModelMap modelMap) throws Exception {
    com.alibaba.fastjson.JSONObject jsonObject = AuxiliaryUtil
        .resolverModel(WQbdQualityTarget.class);
    modelMap.put("tableInfo", jsonObject.toString());
    return "expImp/add";
  }

  /**
   * 功能描述: 导出质量目标数据信息
   *
   * @param: [request] http请求
   * @return: java.lang.Object
   * @auther: prh
   * @date: 2020-09-29 11:00:29
   */
  @RequestMapping("/exportData")
  @Action(description = "导出质量目标数据信息", detail = "导出质量目标数据信息<#if success>成功<#else></#if>")
  public void export(HttpServletRequest request, HttpServletResponse response) throws Exception {
    SysAuditThreadLocalHolder.putParamerter("success", false);
    String[] id = RequestUtil.getStringAryByStr(request, "id");
    QueryFilter queryFilter = new QueryFilter(request, false);
    JSONArray dataArray = ZhiLiangConst.exportAddConditions(queryFilter, id);
    List<WQbdQualityTarget> list = this.wQbdQualityTargetService.queryAll(queryFilter);
    if (list.isEmpty()) {
      list.add(new WQbdQualityTarget());
    }
    new AbstractExpUtil() {
      @Override
      public String customAnalysis(String fieldName, String fieldValue) {
        return null;
      }
    }.executeExport(request, response, list, dataArray, AbstractExpUtil.ExpStyle.MANY_SHEET);
    SysAuditThreadLocalHolder.putParamerter("success", true);
  }

  /**
   * 功能描述: 跳转到质量目标进展填报页面
   *
   * @return: java.lang.String
   * @auther: prh
   * @date: 2020-10-10 11:00:29
   */
  @RequestMapping(UrlConstants.VIEW_DISPATCH_PREFIX + "/addProcess")
  @Action(description = "跳转到质量目标进展填报页面", exectype = "页面跳转日志")
  public String viewAddProcess(HttpServletRequest request, ModelMap modelMap) {
    String id = RequestUtil.getString(request, "id");
    modelMap.put("id", id);

    String flag = RequestUtil.getString(request, "flag");
    modelMap.put("flag", flag);

    String runId = "";
    List<TaskOpinion> taskOpinionNewList = new ArrayList<TaskOpinion>();
    List<ProcessRun> processRunList = processRunService.getByBusinessKeyList(id);
    if (processRunList!=null) {
      for(ProcessRun processRun:processRunList){
        if (BeanUtils.isNotEmpty(processRun)) {
          if (processRun.getFlowKey().equals("zlmbjhwcqksplc")) {
            runId = processRun.getRunId();
            List<TaskOpinion> taskOpinionList = taskOpinionService.getByRunId(runId);
            for (TaskOpinion taskOpinion : taskOpinionList) {
              if (taskOpinion.getEndTime() != null) {
                taskOpinionNewList.add(taskOpinion);
              }
            }
          }
        }
      }
    }

    modelMap.put("taskOpinionNewList", taskOpinionNewList);
    modelMap.put("runId", runId);

    WQbdQualityTarget wQbdQualityTarget = wQbdQualityTargetService.getOneById(id);
    String flowStatusProcess = wQbdQualityTarget.getFlowStatusProcess();
    modelMap.put("flowStatusProcess", flowStatusProcess);
    if (!flag.equals("1")&& !StringUtils.isEmpty(wQbdQualityTarget.getCompletestatus())&& !flowStatusProcess.equals("0")) {
      return "wQbdQualityTarget/processDetail";
    }
    if (flowStatusProcess.equals("2") || flowStatusProcess.equals("3") || flowStatusProcess
        .equals("99")) {
      return "wQbdQualityTarget/processDetail";
    }

    return "wQbdQualityTarget/addProcess";
  }

  /**
   * 功能描述:  质量目标进展填报
   *
   * @param: wQbdQualityTarget 保存的对象
   * @return: java.lang.Object
   * @auther: prh
   * @date: 2020-10-10 11:00:29
   */
  @RequestMapping("/saveProcess")
  @ResponseBody
  @Action(description = "保存质量目标进展数据", detail = "<#if StringUtil.isNotEmpty(modifyInfo)>成功></#if>")
  public Object saveProcess(@RequestBody WQbdQualityTarget wQbdQualityTarget) {
    String id = wQbdQualityTarget.getId();
    int result;
    SysAuditThreadLocalHolder.putParamerter("success", false);
    //修改操作
    ZhiLiangConst.updateCommonFields(wQbdQualityTarget);

    wQbdQualityTarget.setUpdateBy(ContextUtil.getCurrentUserId());
    wQbdQualityTarget.setUpdateTime(new Date());

    result = wQbdQualityTargetService.update(wQbdQualityTarget);
    SysAuditThreadLocalHolder.putParamerter("modifyInfo", StructureModifyUtil
        .getModifyInfo(wQbdQualityTargetService.getOneById(id), wQbdQualityTarget));

    if (result > 0) {
      SysAuditThreadLocalHolder.putParamerter("success", true);
    } else {
      SysAuditThreadLocalHolder.putParamerter("success", false);
    }
    Map<String, Object> idMap = Maps.newHashMap();
    idMap.put("id", wQbdQualityTarget.getId());
    return result > 0 ? getResultDataSuccess("save.success", idMap)
        : getResultDataError("save.failure");
  }

  /**
   * 功能描述: 启动流程
   */
  @PostMapping("/run")
  @ResponseBody
  @Action(description = "启动质量目标流程", detail = "启动流程<#if success>成功<#else></#if>")
  public Object run(HttpServletRequest request, @RequestBody WQbdQualityTarget wQbdQualityTarget) {
    SysUser sysUser = (SysUser) ContextUtil.getCurrentUser();
    //实体主键
    String id = wQbdQualityTarget.getId();
    int isList = RequestUtil.getInt(request, "isList", 1);
    ProcessCmd processCmd = new ProcessCmd();
    //流程Key
    processCmd.setModelKey("zlmbsplc");
    processCmd.setUserAccount(sysUser.getAccount());
    try {
      if (isList == 1) {
        wQbdQualityTarget = wQbdQualityTargetService.getOneById(id);
      }
      processCmd.setBusinessKey(id);
      processRunService.startProcess(processCmd);
      wQbdQualityTarget.setFlowStatus(FlowStatusEnum.APPROVAL_ING2.getValue());
      wQbdQualityTargetService.update(wQbdQualityTarget);
      SysAuditThreadLocalHolder.putParamerter("success", true);
      return getResultDataSuccess("flow.start.success");
    } catch (Exception e) {
      SysAuditThreadLocalHolder.putParamerter("success", false);
      return getResultDataError("flow.start.failure");
    }
  }

  /**
   * 功能描述: 启动进展填报流程
   */
  @PostMapping("/processrun")
  @ResponseBody
  @Action(description = "启动质量目标进展填报流程", detail = "启动流程<#if success>成功<#else></#if>")
  public Object processrun(HttpServletRequest request,
      @RequestBody WQbdQualityTarget wQbdQualityTarget) {
    SysUser sysUser = (SysUser) ContextUtil.getCurrentUser();
    //实体主键
    String id = wQbdQualityTarget.getId();
    int isList = RequestUtil.getInt(request, "isList", 1);
    ProcessCmd processCmd = new ProcessCmd();
    //流程Key
    processCmd.setModelKey("zlmbjhwcqksplc");
    processCmd.setUserAccount(sysUser.getAccount());
    try {
      if (isList == 1) {
        wQbdQualityTarget = wQbdQualityTargetService.getOneById(id);
      }
      processCmd.setBusinessKey(id);
      processRunService.startProcess(processCmd);
      wQbdQualityTarget.setFlowStatusProcess("2");
      wQbdQualityTargetService.update(wQbdQualityTarget);
      SysAuditThreadLocalHolder.putParamerter("success", true);
      return getResultDataSuccess("flow.start.success");
    } catch (Exception e) {
      SysAuditThreadLocalHolder.putParamerter("success", false);
      return getResultDataError("flow.start.failure");
    }
  }


}
